package com.me.study.rabbitmq.config;

import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;

/**
 * @description: 全局mq output
 * @author light
 * @date 2021/9/15 15:38
 * @version 1.0
 */
public interface GlobalEventPublisher {
    /**
     * 直联交换机
     **/
    String TestDirectExchange_OUTPUT = "TestDirectExchange_OUTPUT";

    String TopicExchange_ALL_OUTPUT = "TopicExchange_ALL_OUTPUT";

    String TopicExchange_MAN_OUTPUT = "TopicExchange_MAN_OUTPUT";

    String FanoutExchange_OUTPUT = "FanoutExchange_OUTPUT";

    String DIRECT_EXCHANGE_OUTPUT = "DIRECT_EXCHANGE_OUTPUT";

    String DIRECT_BACKUP_EXCHANGE_OUTPUT = "DIRECT_BACKUP_EXCHANGE_OUTPUT";
    String LAZY_EXCHANGE_OUTPUT = "LAZY_EXCHANGE_OUTPUT";


    /**
     * 推送直联
     * @Author: light
     * @return: org.springframework.messaging.MessageChannel
     **/
    @Output(TestDirectExchange_OUTPUT)
    MessageChannel testDirectExchangeOutput();

    /**
     * 推送 topic.#
     * @Author: light
     * @return: org.springframework.messaging.MessageChannel
     **/
    @Output(TopicExchange_ALL_OUTPUT)
    MessageChannel topicexchangeAllOutput();

    /**
     * 推送 topic.man
     * @Author: light
     * @return: org.springframework.messaging.MessageChannel
     **/
    @Output(TopicExchange_MAN_OUTPUT)
    MessageChannel topicexchangeManOutput();

    /**
     * fanout
     * @Author: light
     * @return: org.springframework.messaging.MessageChannel
     **/
    @Output(FanoutExchange_OUTPUT)
    MessageChannel fanoutexchangeOutput();

    @Output(DIRECT_EXCHANGE_OUTPUT)
    MessageChannel directExchangeOutput();

    @Output(DIRECT_BACKUP_EXCHANGE_OUTPUT)
    MessageChannel directbackupExchangeOutput();

    @Output(LAZY_EXCHANGE_OUTPUT)
    MessageChannel lazyExchangeOutput();
}
